package com.co.notaweb.entities;

import java.io.Serializable;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;

import com.co.notaweb.enums.EstadoEnum;

/**
 * @author PC
 * @version 1.0
 * @created 13-nov-2011 12:14:23
 */
@Entity
@NamedQueries({ @NamedQuery(name = "Asignacion.consultarAsignacionPorCursoDocenteMateria", query = "SELECT a FROM Asignacion a JOIN FETCH a.logros WHERE a.estado = :estado AND a.curso.id = :idCurso AND a.docente.id = :idDocente AND a.materia.id = :idMateria"),
	@NamedQuery(name = "Asignacion.consultarAllAsignacion", query = "SELECT a FROM Asignacion a WHERE a.estado = :estado")})
public class Asignacion implements Serializable {

	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private long id;

	private long intensidad;

	private String descripcion;

	@ManyToOne
	private Docente docente;

	@ManyToOne
	private Curso curso;

	@ManyToOne
	private Materia materia;

	@OneToMany(mappedBy = "asignacion")
	private List<Logro> logros;
	
	@ManyToOne
	private Colegio colegio;
	
	@Enumerated(EnumType.STRING)
	private EstadoEnum estado;

	public Asignacion() {

	}

	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public long getIntensidad() {
		return intensidad;
	}

	public void setIntensidad(long intensidad) {
		this.intensidad = intensidad;
	}

	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public Docente getDocente() {
		return docente;
	}

	public void setDocente(Docente docente) {
		this.docente = docente;
	}

	public Curso getCurso() {
		return curso;
	}

	public void setCurso(Curso curso) {
		this.curso = curso;
	}

	public Materia getMateria() {
		return materia;
	}

	public void setMateria(Materia materia) {
		this.materia = materia;
	}

	public List<Logro> getLogros() {
		return logros;
	}

	public void setLogros(List<Logro> logros) {
		this.logros = logros;
	}

	public Colegio getColegio() {
		return colegio;
	}

	public void setColegio(Colegio colegio) {
		this.colegio = colegio;
	}

	public EstadoEnum getEstado() {
		return estado;
	}

	public void setEstado(EstadoEnum estado) {
		this.estado = estado;
	}

}